package leetcode.editor.cn;

/**
 * @author: yangwk
 * @date: 2023/10/18
 * @description:
 **/
public class P477 {
    /**
     * The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
     *
     * Given an integer array nums, return the sum of Hamming distances between all the pairs of the integers in nums.
     * @param nums
     * @return
     */
    /**
     * Input: nums = [4,14,2]
     * Output: 6
     * Explanation: In binary representation, the 4 is 0100, 14 is 1110, and 2 is 0010 (just
     * showing the four bits relevant in this case).
     * The answer will be:
     * HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.
     *
     * @return
     */
    public static void main(String[] args) {
        System.out.println(totalHammingDistance(new int[]{1, 2}));
        System.out.println(1 >> 0 & 1);
    }

    public static int totalHammingDistance(int[] nums) {
        int sum = 0, n = nums.length;
        for (int i = 0; i < 30; i++) {
            int c = 0;
            for (int num : nums) {
                c += (num >> i) & 1;
            }
            sum += c * (n - c);
        }
        return sum;
    }

}
